home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / basic / EFMUILibSrc.lha / EFMUILibSrc / cln.asc next >
Text File  |  1998-02-03  |  4KB  |  197 lines

  1. ;cln.bb2 --- ChangeLibNumber
  2. ;
  3. ;(c) 1997/98 Vivid Imagination
  4.  
  5. Dim *args.b(6)
  6.  
  7. rdargs.l=ReadArgs_("LIB/A,NUM/A/N,MINNUM/K/N,MAXNUM/K/N,QUIET/S,FIXEDNUM/S",&*args(0),0)
  8.  
  9. If rdargs=0
  10.   End
  11. EndIf
  12.  
  13. wlibname$=LCase$(Peek$(*args(0)))
  14.  
  15. wlibnum.l=Peek.l(*args(1))
  16.  
  17. minnum.l=Peek.l(*args(2))
  18.  
  19. maxnum.l=Peek.l(*args(3))
  20.  
  21. noreq.b=*args(4)
  22.  
  23. fix.b=*args(5)
  24.  
  25. If (minnum >= maxnum) OR (minnum < 0) OR (maxnum <=0) OR (minnum >= 256) OR (maxnum > 256)
  26.   minnum=2
  27.   maxnum=40
  28. EndIf
  29.  
  30. FreeArgs_ rdargs
  31.  
  32. NEWTYPE.lib
  33.   name$
  34.   num.w
  35.   rname$
  36. End NEWTYPE
  37.  
  38. #maxlibs=200
  39.  
  40. Dim libs.lib(#maxlibs)
  41.  
  42. nl.l=-1
  43.  
  44. DEFTYPE.lib temp
  45. DEFTYPE.b   num
  46. DEFTYPE.l
  47.  
  48. l.l=Lock_("blitzlibs:",-2)
  49. If l=0
  50.   If noreq=False
  51.     NPrint "Fatal Error : Can't lock 'blitzlibs:'"
  52.   EndIf
  53.   End
  54. EndIf
  55.  
  56. *fib.FileInfoBlock=AllocMem_(SizeOf.FileInfoBlock,#MEMF_PUBLIC)
  57. *fib2.FileInfoBlock=AllocMem_(SizeOf.FileInfoBlock,#MEMF_PUBLIC)
  58.  
  59. Examine_ l,*fib
  60.  
  61. While ExNext_(l,*fib)
  62.  
  63.   If *fib\fib_DirEntryType>=0  ;dir ?
  64.     d$="blitzlibs:"+Peek$(&*fib\fib_FileName)
  65.     l2.l=Lock_(&d$,-2)
  66.     If l2=0
  67.       If noreq=False
  68.         NPrint "Fatal Error : Can't lock '",d$,"'"
  69.       EndIf
  70.       UnLock_ l
  71.       FreeMem_ *fib,SizeOf.FileInfoBlock:FreeMem_ *fib2,SizeOf.FileInfoBlock
  72.       End
  73.     EndIf
  74.  
  75.     Examine_ l2,*fib2
  76.  
  77.     While ExNext_(l2,*fib2)
  78.       If *fib2\fib_DirEntryType<0   ;file?
  79.         nf$=LCase$(Peek$(&*fib2\fib_FileName))
  80.         If Right$(nf$,5)<>".info"
  81.           f$=d$+"/"+nf$
  82.           If ReadFile(0,f$)
  83.             Fields 0,num
  84.             num=0
  85.             nl+1
  86.             FileInput 0
  87.             If Right$(nf$,4)=".obj"
  88.               libs(nl)\name=LCase$(UnLeft$(nf$,4))
  89.             Else
  90.               ex=Instr(nf$,".")
  91.               libs(nl)\name=LCase$(Left$(nf$,ex-1))+"lib"
  92.             EndIf
  93.             Get 0,37
  94.             If num<0
  95.               libs(nl)\num=num+256
  96.             Else
  97.               libs(nl)\num=num
  98.             EndIf
  99.             libs(nl)\rname=f$
  100.             CloseFile 0
  101.           Else
  102.             If noreq=False
  103.               NPrint "Fatal Error : Can't read file '",f$,"'"
  104.             EndIf
  105.             UnLock_ l:UnLock_ l2
  106.             FreeMem_ *fib,SizeOf.FileInfoBlock:FreeMem_ *fib2,SizeOf.FileInfoBlock
  107.             End
  108.           EndIf
  109.         EndIf
  110.       EndIf
  111.     Wend
  112.     UnLock_ l2
  113.   EndIf
  114. Wend
  115.  
  116. DefaultInput
  117.  
  118. UnLock_ l
  119.  
  120. FreeMem_ *fib,SizeOf.FileInfoBlock:FreeMem_ *fib2,SizeOf.FileInfoBlock
  121.  
  122. wrname$=""
  123.  
  124. For i=0 To nl
  125.   If libs(i)\name=wlibname$
  126.     wrname$=libs(i)\rname
  127.     If libs(i)\num=wlibnum
  128.       If noreq=False
  129.         NPrint "Warning : No need to change the number"
  130.       EndIf
  131.       End
  132.     EndIf
  133.   EndIf
  134. Next
  135.  
  136. If wrname$=""
  137.   If noreq=False
  138.     NPrint "Error : The library doesn't exist in 'blitzlibs:'"
  139.   EndIf
  140.   End
  141. EndIf
  142.  
  143. libn=minnum
  144.  
  145. cln.b=False
  146.  
  147. lab1
  148. For i=0 To nl
  149.   If libs(i)\num=wlibnum
  150.     If fix=True
  151.       If noreq=False
  152.         NPrint "Error : Library number already used"
  153.         NPrint "Please compile that lib changing the number"
  154.       EndIf
  155.       End
  156.     EndIf
  157.     cln=True
  158.     wlibnum=libn
  159.     libn+1
  160.     If libn > maxnum
  161.       If noreq=False
  162.         NPrint "Error : Unable to find a usable number"
  163.       EndIf
  164.       End
  165.     EndIf
  166.     Pop For
  167.     Goto lab1
  168.   EndIf
  169. Next
  170.  
  171. If noreq=False
  172.   If cln=True
  173.     NPrint "New number : ",wlibnum
  174.   EndIf
  175. EndIf
  176.  
  177.  
  178. num.b=wlibnum
  179.  
  180. If OpenFile(0,wrname$)
  181.   FileSeek 0,0
  182.   Fields 0,num.b
  183.   Put 0,37
  184.   CloseFile 0
  185. Else
  186.   If noreq=False
  187.     NPrint "Fatal Error : Can't open the library"
  188.   EndIf
  189.   End
  190. EndIf
  191.  
  192. If noreq=False
  193.   NPrint "Success"
  194. EndIf
  195.  
  196. End
  197.